package schema

import (
	"context"
	"time"

	"github.com/IBM/sarama"
)

// mysql数据库配置结构
type MysqlConfig struct {
	Host     string `json:"host"`
	Port     int    `json:"port"`
	User     string `json:"user"`
	Password string `json:"password"`
	Database string `json:"database"`
}

// 健康状态数据结构
type HealthStatus struct {
	ID         string `json:"id"`
	Status     string `json:"status"`
	Host       string `json:"host"`
	Version    string `json:"version"`
	LastUpdate int64  `json:"last_update"`
}

type TopicConfig struct {
	Table     string `json:"table"`
	Function  string `json:"function"`
	Status    string `json:"status"`
	CreateAt  int64  `json:"created_at"`
	UpdatedAt int64  `json:"updated_at"`
}

// ================= 状态结构定义 =================
type TopicStatus struct {
	ID            string `json:"id"`
	Host          string `json:"host"`
	Topic         string `json:"topic"`
	ConsumerCount int64  `json:"consumer_count"`
	LatestOffset  int64  `json:"latest_offset"`
	LastUpdate    int64  `json:"last_update"`
	CurrentBatch  int64  `json:"current_batch"` // 当前批次大小（最后批次）
}

type Consumer struct {
	sarama.Consumer
	topic      string
	scriptPath string
	cancel     context.CancelFunc
}

type KafkaConfig struct {
	BootstrapServers string `json:"bootstrap.servers"`
	GroupId          string `json:"group.id"`
	AutoOffsetReset  string `json:"auto.offset.reset"`
}

// 消费者配置（可外部传入）
type ConsumerConfig struct {
	BatchSize    int           // 批量处理消息数量
	BatchTimeout time.Duration // 批量超时时间
}

// 原结构体
var response struct {
	Success bool                     `json:"success"`
	Data    []map[string]interface{} `json:"data"`
	Error   string                   `json:"error"`
}

// 新结构体（添加JSON标签并允许空字段）
type PythonResponse struct {
	Success bool                     `json:"success"`
	Data    []map[string]interface{} `json:"data,omitempty"` // 允许空字段
	Error   string                   `json:"error,omitempty"`
	Type    string                   `json:"type,omitempty"` // 匹配Python新增字段
}
